home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume7 / xmail / patch1.04 < prev    next >
Encoding:
Internet Message Format  |  1990-06-01  |  49.3 KB

  1. Path: uunet!aplcen!haven!decuac!decwrl!elroy.jpl.nasa.gov!ames!sun-barr!newstop!sun!news
  2. From: news@sun.Eng.Sun.COM (news)
  3. Newsgroups: comp.sources.x
  4. Subject: v07i084: xmail -- Mail front end for X11, Patch1, Part04/06
  5. Message-ID: <136499@sun.Eng.Sun.COM>
  6. Date: 1 Jun 90 03:41:40 GMT
  7. Organization: Sun Microsystems, Inc. - Mtn View, CA
  8. Lines: 1498
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: parns.nsc.com!michael (Michael C. Wagnitz)
  12. Posting-number: Volume 7, Issue 84
  13. Archive-name: xmail/patch1.04
  14. Patch-To: xmail: Volume 6, Issue 41-46
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 4 (of 5)."
  23. # Contents:  Patch.01d
  24. # Wrapped by michael@harley on Tue May 29 10:33:51 1990
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'Patch.01d' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'Patch.01d'\"
  28. else
  29. echo shar: Extracting \"'Patch.01d'\" \(47115 characters\)
  30. sed "s/^X//" >'Patch.01d' <<'END_OF_FILE'
  31. X+  XtTextBlock     textblock;
  32. X+  XtTextPosition    pos;
  33. X+  Widget        w = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
  34. X+ 
  35. X+ 
  36. X+  pos = XtTextGetInsertionPoint(w) + 1;
  37. X+ 
  38. X+  XtTextSetInsertionPoint(w, pos);
  39. X+ 
  40. X+  textblock.firstPos = 0;
  41. X+  textblock.length   = 1;
  42. X+  textblock.ptr      = s;
  43. X+  textblock.format   = FMT8BIT;
  44. X+ 
  45. X+  XtTextReplace(w, pos, pos + 1, &textblock);
  46. X+ 
  47. X+  XtTextSetInsertionPoint(w, pos);
  48. X+ 
  49. X+  SetSelect(w, NULL, NULL, NULL);
  50. X+ } /* markIndex */
  51. X+ 
  52. X+ 
  53. X+ /*
  54. X  ** @(#)Normalize() - Position insertion pointer at end of any text
  55. X  */
  56. X  void
  57. X***************
  58. X*** 73,78 ****
  59. X--- 104,110 ----
  60. X   XtTextPosition lastPos;
  61. X  
  62. X  
  63. X+  XtTextSetInsertionPoint(w, 0);
  64. X   lastPos = TextGetLastPos(w);
  65. X   XtTextSetInsertionPoint(w, lastPos);
  66. X  /*
  67. X***************
  68. X*** 94,107 ****
  69. X  {
  70. X   XtTextBlock     textblock;
  71. X   XtTextPosition    startPos, endPos;
  72. X!  Arg            args[MAXARGS];
  73. X   int        status;
  74. X  
  75. X  
  76. X   if (!s || strcmp(s, "") == 0) return;
  77. X  
  78. X! #ifndef X11R3
  79. X!  if (w == WidgetOf(WidgetOf(toplevel, "vpane"), "indexWindow"))
  80. X      if (strlen(s) > INDEXSIZE) {
  81. X         INDEXSIZE = strlen(s) + 1;
  82. X         IndexBuf = XtRealloc(IndexBuf, INDEXSIZE);
  83. X--- 126,139 ----
  84. X  {
  85. X   XtTextBlock     textblock;
  86. X   XtTextPosition    startPos, endPos;
  87. X!  Arg            args[2];
  88. X   int        status;
  89. X  
  90. X  
  91. X   if (!s || strcmp(s, "") == 0) return;
  92. X  
  93. X! #if XtSpecificationRelease >= 4
  94. X!  if (w == WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow"))
  95. X      if (strlen(s) > INDEXSIZE) {
  96. X         INDEXSIZE = strlen(s) + 1;
  97. X         IndexBuf = XtRealloc(IndexBuf, INDEXSIZE);
  98. X***************
  99. X*** 134,142 ****
  100. X  {
  101. X   int    j = 0;            /* return zero if no valid message exists */
  102. X   char    *s;
  103. X   
  104. X   for (s = IndexBuf + pos; s > IndexBuf && *(s-1) != '\n'; s--);
  105. X!  for (s++; *s && !isdigit(*s); s++);
  106. X   sscanf(s, "%d", &j);
  107. X   return j;
  108. X  } /* PositionToMsgNumber */
  109. X--- 166,178 ----
  110. X  {
  111. X   int    j = 0;            /* return zero if no valid message exists */
  112. X   char    *s;
  113. X+  XtTextPosition newpos;
  114. X   
  115. X   for (s = IndexBuf + pos; s > IndexBuf && *(s-1) != '\n'; s--);
  116. X!  newpos = s - IndexBuf;
  117. X!  XtTextSetInsertionPoint(WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow"),
  118. X!                          newpos);    /* reset insertion marker to front */
  119. X!  for (; *s && !isdigit(*s); s++);
  120. X   sscanf(s, "%d", &j);
  121. X   return j;
  122. X  } /* PositionToMsgNumber */
  123. X***************
  124. X*** 150,169 ****
  125. X  String    msg;
  126. X  {
  127. X   Arg    args[1];
  128. X!  char    *p, *strchr();
  129. X   int    worthy = 0;            /* only msgs with ending newline are */
  130. X  
  131. X  
  132. X!  if ((p = strchr(msg, '\n')) != NULL) {    /* Only display first line of output */
  133. X      *p = '\0';                /* (and no new line at end of label) */
  134. X      worthy = 1;
  135. X     }
  136. X  
  137. X!  XtSetArg(args[0], XtNlabel, (XtArgVal) msg);    /* show the error message */
  138. X!  XtSetValues(WidgetOf(WidgetOf(toplevel, "vpane"), "statusWindow"), args, ONE);
  139. X  
  140. X   if (worthy && XMail.bellRing)        /* ring bell if not silenced by user */
  141. X!     XBell(XtDisplay(toplevel), 33);
  142. X  } /* Bell */
  143. X  
  144. X  
  145. X--- 186,209 ----
  146. X  String    msg;
  147. X  {
  148. X   Arg    args[1];
  149. X!  char    *p, *index();
  150. X!  char    buf[BUFSIZ];
  151. X   int    worthy = 0;            /* only msgs with ending newline are */
  152. X  
  153. X  
  154. X!  (void) strncpy(buf, msg, BUFSIZ - 1);
  155. X!  buf[BUFSIZ - 1] = '\0';
  156. X! 
  157. X!  if ((p = index(buf, '\n')) != NULL) {    /* Only display first line of output */
  158. X      *p = '\0';                /* (and no new line at end of label) */
  159. X      worthy = 1;
  160. X     }
  161. X  
  162. X!  XtSetArg(args[0], XtNlabel, (XtArgVal) buf);    /* show the error message */
  163. X!  XtSetValues(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"), args, ONE);
  164. X  
  165. X   if (worthy && XMail.bellRing)        /* ring bell if not silenced by user */
  166. X!     XBell (XtDisplay (toplevel), 33);
  167. X  } /* Bell */
  168. X  
  169. X  
  170. X***************
  171. X*** 170,176 ****
  172. X  /*
  173. X  ** @(#)UpdateTitleBar() - replace information in the title bar label
  174. X  */
  175. X! void
  176. X  UpdateTitleBar(format, arg)
  177. X  char *format, *arg;
  178. X  {
  179. X--- 210,216 ----
  180. X  /*
  181. X  ** @(#)UpdateTitleBar() - replace information in the title bar label
  182. X  */
  183. X! int
  184. X  UpdateTitleBar(format, arg)
  185. X  char *format, *arg;
  186. X  {
  187. X***************
  188. X*** 179,198 ****
  189. X   Widget        w, m;
  190. X  
  191. X  
  192. X!  w = WidgetOf(WidgetOf(WidgetOf(toplevel, "vpane"), "titleBar"), "titleBar");
  193. X  
  194. X   sprintf(string, format, arg);
  195. X!  sprintf(message, "%s - %s", TITLE, string);
  196. X   XtSetArg(args[0], XtNlabel, (XtArgVal) message);
  197. X   XtSetValues(w, args, ONE);
  198. X   
  199. X!  w = WidgetOf(WidgetOf(WidgetOf(toplevel, "vpane"), "commandPanel"), "hold");
  200. X!     XtSetSensitive(w, (string[1] == '+') ? False : True);
  201. X! 
  202. X!  w = WidgetOf(WidgetOf(WidgetOf(toplevel,"vpane"),"commandPanel"),"Newmail");
  203. X   m = WidgetOf(WidgetOf(WidgetOf(w, "Newmail_menu"), "menu"), "inc");
  204. X   if (m)
  205. X      XtSetSensitive(m, (string[1] == '+') ? False : True);
  206. X  } /* UpdateTitleBar */
  207. X  
  208. X  
  209. X--- 219,236 ----
  210. X   Widget        w, m;
  211. X  
  212. X  
  213. X!  w = WidgetOf(WidgetOf(WidgetOf(toplevel, "topBox"), "titleBar"), "titleBar");
  214. X  
  215. X   sprintf(string, format, arg);
  216. X!  sprintf(message, "%s%d - %s", TITLE, PATCHLEVEL, string);
  217. X   XtSetArg(args[0], XtNlabel, (XtArgVal) message);
  218. X   XtSetValues(w, args, ONE);
  219. X   
  220. X!  w = WidgetOf(WidgetOf(WidgetOf(toplevel,"topBox"),"commandPanel"),"Newmail");
  221. X   m = WidgetOf(WidgetOf(WidgetOf(w, "Newmail_menu"), "menu"), "inc");
  222. X   if (m)
  223. X      XtSetSensitive(m, (string[1] == '+') ? False : True);
  224. X+  return(1);                /* for use inside parse C_FILE/O_BELL */
  225. X  } /* UpdateTitleBar */
  226. X  
  227. X  
  228. X***************
  229. X*** 204,223 ****
  230. X  Widget    w;
  231. X  char    *s;
  232. X  {
  233. X!  Arg     args[MAXARGS];
  234. X!  Cardinal     n;
  235. X!  static XtTextSource    old, new;
  236. X  
  237. X   if (s && *s) {
  238. X!     n = 0;
  239. X!     XtSetArg(args[n], XtNstring, (XtArgVal) s);            n++;
  240. X!     XtSetArg(args[n], XtNlength, (XtArgVal) strlen(s));        n++;
  241. X!     XtSetArg(args[n], XtNeditType, (XtArgVal) XttextRead);    n++;
  242. X  
  243. X!     new = XtStringSourceCreate(w, args, n);
  244. X      XtTextSetSource(w, new, (XtTextPosition) 0);
  245. X      if (old)
  246. X         XtStringSourceDestroy(old);
  247. X-     old = new;
  248. X     }
  249. X  } /* writeTo */
  250. X--- 242,262 ----
  251. X  Widget    w;
  252. X  char    *s;
  253. X  {
  254. X!  Arg        args[4];
  255. X!  XtTextSource    new;
  256. X!  XtTextSource    old = NULL;
  257. X  
  258. X   if (s && *s) {
  259. X!     old = XtTextGetSource(w);
  260. X  
  261. X!     XtSetArg(args[0], XtNstring, (XtArgVal) s);
  262. X!     XtSetArg(args[1], XtNlength, (XtArgVal) strlen(s));
  263. X!     XtSetArg(args[2], XtNeditType, (XtArgVal) XttextRead);
  264. X! 
  265. X!     new = XtStringSourceCreate(w, args, 3);
  266. X      XtTextSetSource(w, new, (XtTextPosition) 0);
  267. X+ 
  268. X      if (old)
  269. X         XtStringSourceDestroy(old);
  270. X     }
  271. X  } /* writeTo */
  272. X*** ../v1.0/windows.c    Sun May 27 21:06:03 1990
  273. X--- windows.c    Sun May 27 21:11:38 1990
  274. X***************
  275. X*** 40,45 ****
  276. X--- 40,46 ----
  277. X   *
  278. X   * 1. AddHelpText:
  279. X   * 2. AddMenuWindow:
  280. X+  * 3. AddSetMenu:
  281. X   * 4. CreateFolderButton: and
  282. X   * 5. CreateInputWindow.
  283. X   *
  284. X***************
  285. X*** 50,55 ****
  286. X--- 51,57 ----
  287. X  
  288. X  #include "global.h"
  289. X  #include "Mailwatch.h"
  290. X+ #include "patchlevel.h"
  291. X  #include "icon.mail"
  292. X  #include "national.bm"
  293. X  
  294. X***************
  295. X*** 63,70 ****
  296. X  String    name;
  297. X  String    help_text;
  298. X  {
  299. X!  Arg        args[MAXARGS];
  300. X!  Cardinal     indx, n;
  301. X   XtTextSource    new;
  302. X   char        trans[BUFSIZ];        
  303. X  
  304. X--- 65,72 ----
  305. X  String    name;
  306. X  String    help_text;
  307. X  {
  308. X!  Arg        args[4];
  309. X!  Cardinal     indx;
  310. X   XtTextSource    new;
  311. X   char        trans[BUFSIZ];        
  312. X  
  313. X***************
  314. X*** 78,93 ****
  315. X  
  316. X      if (HelpNames[indx]) {
  317. X         (void) sprintf(trans, p_Trans, name, name);
  318. X!     XtOverrideTranslations(parent, XtParseTranslationTable(trans));
  319. X  
  320. X!     n = 0;
  321. X!     XtSetArg(args[n], XtNstring, (XtArgVal) help_text);            n++;
  322. X!     XtSetArg(args[n], XtNlength, (XtArgVal) strlen(help_text));        n++;
  323. X!     XtSetArg(args[n], XtNeditType, (XtArgVal) XttextRead);        n++;
  324. X  
  325. X!        HelpStrings[indx] = XtStringSourceCreate(WidgetOf(WidgetOf(WidgetOf(toplevel, "vpane"), "help"), "helpWindow"), args, n);
  326. X     }
  327. X-    }
  328. X  } /* AddHelpText */
  329. X  
  330. X  
  331. X--- 80,94 ----
  332. X  
  333. X      if (HelpNames[indx]) {
  334. X         (void) sprintf(trans, p_Trans, name, name);
  335. X!        XtOverrideTranslations(parent, XtParseTranslationTable(trans));
  336. X  
  337. X!        XtSetArg(args[0], XtNstring, (XtArgVal) help_text);
  338. X!        XtSetArg(args[1], XtNlength, (XtArgVal) strlen(help_text));
  339. X!        XtSetArg(args[2], XtNeditType, (XtArgVal) XttextRead);
  340. X  
  341. X!        HelpStrings[indx] = XtStringSourceCreate(WidgetOf(WidgetOf(WidgetOf(toplevel,"topBox"),"help"),"helpWindow"),args,3);
  342. X!       }
  343. X     }
  344. X  } /* AddHelpText */
  345. X  
  346. X  
  347. X***************
  348. X*** 101,107 ****
  349. X  String        action;
  350. X  menuList_p    *list;
  351. X  {
  352. X!  Arg         args[MAXARGS];
  353. X   Cardinal    j, k, n, indx;
  354. X   Widget        menu, layout, previous, next;
  355. X   char        tag[BUFSIZ], trans[BUFSIZ], *c;        
  356. X--- 102,108 ----
  357. X  String        action;
  358. X  menuList_p    *list;
  359. X  {
  360. X!  Arg         args[6];
  361. X   Cardinal    j, k, n, indx;
  362. X   Widget        menu, layout, previous, next;
  363. X   char        tag[BUFSIZ], trans[BUFSIZ], *c;        
  364. X***************
  365. X*** 139,147 ****
  366. X      XtSetArg(args[0], XtNtranslations, XtParseTranslationTable(trans));
  367. X      menu = XtCreatePopupShell(tag, overrideShellWidgetClass, parent, args, ONE);
  368. X  
  369. X!     n = 0;
  370. X!     XtSetArg(args[n], XtNdefaultDistance, 1);                n++;
  371. X!     layout = XtCreateManagedWidget("menu", formWidgetClass, menu, args, n);
  372. X  /*
  373. X  ** Find widest label for this menu
  374. X  */
  375. X--- 140,147 ----
  376. X      XtSetArg(args[0], XtNtranslations, XtParseTranslationTable(trans));
  377. X      menu = XtCreatePopupShell(tag, overrideShellWidgetClass, parent, args, ONE);
  378. X  
  379. X!     XtSetArg(args[0], XtNdefaultDistance, (XtArgVal) 1);
  380. X!     layout = XtCreateManagedWidget("menu", formWidgetClass, menu, args, ONE);
  381. X  /*
  382. X  ** Find widest label for this menu
  383. X  */
  384. X***************
  385. X*** 150,188 ****
  386. X             j = k;
  387. X             n = indx;
  388. X            }
  389. X!     n = --indx;
  390. X! /*
  391. X! ** add length for accelerator keys menu notes
  392. X! */
  393. X!     indx = XTextWidth(TextFontStr, list[n]->label, j) + 12;
  394. X!     if (n > 0)
  395. X!        indx += XTextWidth(TextFontStr, Labels[n], strlen(Labels[n]));
  396. X  
  397. X!     n = 0;
  398. X!     XtSetArg(args[n], XtNwidth, indx);                    n++;
  399. X!     XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  400. X!     XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(b_Trans)); n++;
  401. X  /*
  402. X  ** create the menu buttons
  403. X  */
  404. X      previous = NULL;
  405. X!     for (indx = 0; list[indx] != NULL; indx++, n = 3) {
  406. X!         strcpy(tag, list[indx]->label);        /* set window id from label */
  407. X!         if ((c = (char *)index(tag, ' '))) *c = '\0';
  408. X! 
  409. X          sprintf(trans, "%-*.*s", j, j, list[indx]->label);
  410. X- 
  411. X          if (Labels[indx])            /* add accel. note if needed */
  412. X             strcat(trans, Labels[indx]);
  413. X-         else
  414. X-            strcat(trans, "              ");    /* keep all labels aligned */
  415. X  
  416. X!         if (indx == 1 && list[indx + 1])    /* 2 option menu is narrower */
  417. X!            strcat(trans, "      ");
  418. X! 
  419. X!         XtSetArg(args[n], XtNlabel, trans);                n++;
  420. X!         XtSetArg(args[n], XtNfromVert, previous);            n++;
  421. X!         next = XtCreateManagedWidget(tag, commandWidgetClass, layout, args, n);
  422. X          XtAddCallback(next, XtNcallback, list[indx]->func, list[indx]->data);
  423. X          previous = next;
  424. X  
  425. X--- 150,177 ----
  426. X             j = k;
  427. X             n = indx;
  428. X            }
  429. X!     k = XTextWidth(TextFontStr, list[n]->label, j) + 12;
  430. X  
  431. X!     if (--indx > 0)    /* add length for accelerator keys menu notes */
  432. X!        k += XTextWidth(TextFontStr, Labels[indx], strlen(Labels[indx]));
  433. X  /*
  434. X  ** create the menu buttons
  435. X  */
  436. X      previous = NULL;
  437. X!     XtSetArg(args[0], XtNwidth, k);
  438. X!     XtSetArg(args[1], XtNfont, TextFontStr);
  439. X!     XtSetArg(args[2], XtNjustify, XtJustifyLeft);
  440. X!     XtSetArg(args[3], XtNtranslations, XtParseTranslationTable(b_Trans));
  441. X!     for (indx = 0; list[indx] != NULL; indx++) {
  442. X!         strcpy(tag, list[indx]->label);        /* set window name by label */
  443. X!         if ((c = (char *)index(tag, ' '))) *c = '\0';    /* first word only */
  444. X          sprintf(trans, "%-*.*s", j, j, list[indx]->label);
  445. X          if (Labels[indx])            /* add accel. note if needed */
  446. X             strcat(trans, Labels[indx]);
  447. X  
  448. X!         XtSetArg(args[4], XtNlabel, trans);
  449. X!         XtSetArg(args[5], XtNfromVert, previous);
  450. X!         next = XtCreateManagedWidget(tag, commandWidgetClass, layout, args, 6);
  451. X          XtAddCallback(next, XtNcallback, list[indx]->func, list[indx]->data);
  452. X          previous = next;
  453. X  
  454. X***************
  455. X*** 189,197 ****
  456. X      if (L_Trans[indx]) {
  457. X         sprintf(trans, L_Trans[indx], action, list[indx]->data);
  458. X             XtOverrideTranslations(parent, XtParseTranslationTable(trans));
  459. X         }
  460. X     }
  461. X-    }
  462. X  } /* AddMenuWindow */
  463. X  
  464. X  
  465. X--- 178,193 ----
  466. X      if (L_Trans[indx]) {
  467. X         sprintf(trans, L_Trans[indx], action, list[indx]->data);
  468. X             XtOverrideTranslations(parent, XtParseTranslationTable(trans));
  469. X+           }
  470. X         }
  471. X+ /*
  472. X+ ** Dummy out any remaining combinations of accelerators to do nothing
  473. X+ */
  474. X+     for (; L_Trans[indx] != NULL; indx++) {
  475. X+     sprintf(trans, L_Trans[indx], "DoNothing", "");
  476. X+         XtOverrideTranslations(parent, XtParseTranslationTable(trans));
  477. X+        }
  478. X     }
  479. X  } /* AddMenuWindow */
  480. X  
  481. X  
  482. X***************
  483. X*** 208,216 ****
  484. X  menuList_p    *list;            /* aux. menu buttons list w/ cbacks */
  485. X  String        help_text;        /* pointer to button specific info */
  486. X  {
  487. X!  Arg        args[MAXARGS];
  488. X   Widget        button;
  489. X-  Cardinal    n;
  490. X   char        trans[BUFSIZ];
  491. X  /*
  492. X  ** Insert name of XtActionProc (and parameter(s)) in the translation list
  493. X--- 204,211 ----
  494. X  menuList_p    *list;            /* aux. menu buttons list w/ cbacks */
  495. X  String        help_text;        /* pointer to button specific info */
  496. X  {
  497. X!  Arg        args[6];
  498. X   Widget        button;
  499. X   char        trans[BUFSIZ];
  500. X  /*
  501. X  ** Insert name of XtActionProc (and parameter(s)) in the translation list
  502. X***************
  503. X*** 217,230 ****
  504. X  */
  505. X   (void) sprintf(trans, "\
  506. X      <Btn1Down>: highlight() %s(%s) unhighlight()", action, command);
  507. X-  n = 0;
  508. X-  XtSetArg(args[n], XtNwidth, XMail.buttonWidth);            n++;
  509. X-  XtSetArg(args[n], XtNheight, XMail.buttonHeight);            n++;
  510. X-  XtSetArg(args[n], XtNresize, False);                    n++;
  511. X-  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  512. X-  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(trans));    n++;
  513. X-  button = XtCreateManagedWidget(name, commandWidgetClass, parent, args, n);
  514. X  
  515. X   if (help_text)
  516. X      AddHelpText(button, name, help_text);
  517. X  
  518. X--- 212,225 ----
  519. X  */
  520. X   (void) sprintf(trans, "\
  521. X      <Btn1Down>: highlight() %s(%s) unhighlight()", action, command);
  522. X  
  523. X+  XtSetArg(args[0], XtNwidth, XMail.buttonWidth);
  524. X+  XtSetArg(args[1], XtNheight, XMail.buttonHeight);
  525. X+  XtSetArg(args[2], XtNresize, False);
  526. X+  XtSetArg(args[3], XtNfont, TextFontStr);
  527. X+  XtSetArg(args[4], XtNtranslations, XtParseTranslationTable(trans));
  528. X+  button = XtCreateManagedWidget(name, commandWidgetClass, parent, args, 5);
  529. X+ 
  530. X   if (help_text)
  531. X      AddHelpText(button, name, help_text);
  532. X  
  533. X***************
  534. X*** 233,239 ****
  535. X--- 228,250 ----
  536. X  } /* AddButton */
  537. X  
  538. X  
  539. X+ /* 
  540. X+ ** @(#)AddSetMenu() - add hook to create menu for toggling mail options
  541. X+ */
  542. X  void
  543. X+ AddSetMenu(w)
  544. X+ Widget        w;
  545. X+ {
  546. X+  Widget        parent = XtNameToWidget(w, "preserve");
  547. X+  static String p_Trans = "#override \
  548. X+     <Btn3Down>: SetCursor(True) SetMenu() MenuPopup(set_menu) SetCursor()";
  549. X+ 
  550. X+  XtOverrideTranslations(parent, XtParseTranslationTable(p_Trans));
  551. X+ } /* AddSetMenu */
  552. X+ 
  553. X+ 
  554. X+ 
  555. X+ void
  556. X  CreateButtons(parent)
  557. X  Widget parent;
  558. X  {
  559. X***************
  560. X*** 253,260 ****
  561. X   b1.label = "save";    b1.func = (XtCallbackProc) Save;    b1.data = "s";
  562. X   b2.label = "Save to author"; b2.func = (XtCallbackProc) Save;    b2.data = "S";
  563. X   b3.label = "write";    b3.func = (XtCallbackProc) Save;    b3.data = "w";
  564. X!  b4.label = "Write to author"; b4.func = (XtCallbackProc) Save;    b4.data = "W";
  565. X!  list[0] = &b1; list[1] = &b2; list[2] = &b3; list[3] = &b4; list[4] = NULL;
  566. X   AddButton(parent, "save", "DoSave", "s", list, Save_Help_Text);
  567. X  
  568. X   CreateFolderButton(parent);
  569. X--- 264,270 ----
  570. X   b1.label = "save";    b1.func = (XtCallbackProc) Save;    b1.data = "s";
  571. X   b2.label = "Save to author"; b2.func = (XtCallbackProc) Save;    b2.data = "S";
  572. X   b3.label = "write";    b3.func = (XtCallbackProc) Save;    b3.data = "w";
  573. X!  list[0] = &b1; list[1] = &b2; list[2] = &b3; list[3] = NULL;
  574. X   AddButton(parent, "save", "DoSave", "s", list, Save_Help_Text);
  575. X  
  576. X   CreateFolderButton(parent);
  577. X***************
  578. X*** 264,275 ****
  579. X   list[0] = &b1; list[1] = &b2; list[2] = NULL;
  580. X   AddButton(parent, "copy", "DoSave", "c", list, Copy_Help_Text);
  581. X  
  582. X!  b1.label = "hold"; b1.func = (XtCallbackProc) DoWith; b1.data = "hold";
  583. X!  list[0] = &b1; list[1] = NULL;
  584. X!  AddButton(parent, "hold", "DoSelected", "hold", list, Hold_Help_Text);
  585. X  
  586. X   b1.label = "delete";    b1.func = (XtCallbackProc) DoWith;    b1.data = "d";
  587. X!  b2.label = "undelete";    b2.func = (XtCallbackProc) DoIt;    b2.data = "u";
  588. X   list[0] = &b1; list[1] = &b2; list[2] = NULL;
  589. X   AddButton(parent, "delete", "DoSelected", "d", list, Delete_Help_Text);
  590. X  
  591. X--- 274,283 ----
  592. X   list[0] = &b1; list[1] = &b2; list[2] = NULL;
  593. X   AddButton(parent, "copy", "DoSave", "c", list, Copy_Help_Text);
  594. X  
  595. X!  AddButton(parent, "preserve", "DoSelected", "preserve", NULL, Hold_Help_Text);
  596. X  
  597. X   b1.label = "delete";    b1.func = (XtCallbackProc) DoWith;    b1.data = "d";
  598. X!  b2.label = "undelete";    b2.func = (XtCallbackProc) DoWith;    b2.data = "u";
  599. X   list[0] = &b1; list[1] = &b2; list[2] = NULL;
  600. X   AddButton(parent, "delete", "DoSelected", "d", list, Delete_Help_Text);
  601. X  
  602. X***************
  603. X*** 308,313 ****
  604. X--- 316,323 ----
  605. X  
  606. X   CreateFileWindow(parent);
  607. X  
  608. X+  AddSetMenu(parent);        /* add a menu for toggling mail options */
  609. X+ 
  610. X  } /* CreateButtons */
  611. X  
  612. X  
  613. X***************
  614. X*** 318,325 ****
  615. X  CreateCommandPanel(parent)
  616. X  Widget parent;
  617. X  {
  618. X!  Arg args[10];
  619. X!  Cardinal n;
  620. X   Widget        cw;
  621. X  
  622. X   static String w_Trans = "\
  623. X--- 328,335 ----
  624. X  CreateCommandPanel(parent)
  625. X  Widget parent;
  626. X  {
  627. X!  Arg        args[8];
  628. X!  Cardinal    n;
  629. X   Widget        cw;
  630. X  
  631. X   static String w_Trans = "\
  632. X***************
  633. X*** 327,343 ****
  634. X      <Btn2Down>:    DoNothing()\n\
  635. X      <Btn3Down>:    DoNothing()";
  636. X  
  637. X!  n = 0;
  638. X!  XtSetArg(args[n], XtNhSpace, XMail.commandHSpace);            n++;
  639. X!  XtSetArg(args[n], XtNvSpace, XMail.commandVSpace);            n++;
  640. X!  XtSetArg(args[n], XtNallowResize, (XtArgVal) False);            n++;
  641. X!  XtSetArg(args[n], XtNmax, XMail.commandMinHeight);            n++;
  642. X!  XtSetArg(args[n], XtNmin, XMail.commandMinHeight);            n++;
  643. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  644. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(w_Trans));    n++;
  645. X! #ifndef X11R3
  646. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  647. X  #endif
  648. X   cw = XtCreateManagedWidget("commandPanel", boxWidgetClass, parent, args, n);
  649. X   CreateButtons(cw);
  650. X  } /* CreateCommandPanel */
  651. X--- 337,355 ----
  652. X      <Btn2Down>:    DoNothing()\n\
  653. X      <Btn3Down>:    DoNothing()";
  654. X  
  655. X!  XtSetArg(args[0], XtNhSpace, XMail.commandHSpace);
  656. X!  XtSetArg(args[1], XtNvSpace, XMail.commandVSpace);
  657. X!  XtSetArg(args[2], XtNallowResize, (XtArgVal) False);
  658. X!  XtSetArg(args[3], XtNmax, XMail.commandMinHeight);
  659. X!  XtSetArg(args[4], XtNmin, XMail.commandMinHeight);
  660. X!  XtSetArg(args[5], XtNfont, TextFontStr);
  661. X!  XtSetArg(args[6], XtNtranslations, XtParseTranslationTable(w_Trans));
  662. X!  n = 7;
  663. X! 
  664. X! #if XtSpecificationRelease >= 4
  665. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  666. X  #endif
  667. X+ 
  668. X   cw = XtCreateManagedWidget("commandPanel", boxWidgetClass, parent, args, n);
  669. X   CreateButtons(cw);
  670. X  } /* CreateCommandPanel */
  671. X***************
  672. X*** 352,383 ****
  673. X  CreateFileWindow(parent)
  674. X  Widget parent;
  675. X  {
  676. X!  Arg        args[MAXARGS];
  677. X   Cardinal     n;
  678. X   Widget        w;
  679. X  
  680. X!  static String trans = "#override \
  681. X!   Ctrl<Key>W: DeleteWord() beginning-of-line() end-of-line()\n\
  682. X!   Ctrl<Key>U: DeleteLine()\n\
  683. X!   Ctrl<Key>H: InsertSpace() delete-previous-character() beginning-of-line() end-of-line()\n\
  684. X!   <Key>Delete: InsertSpace() delete-previous-character() beginning-of-line() end-of-line()\n\
  685. X!   <Key>BackSpace: InsertSpace() delete-previous-character() beginning-of-line() end-of-line()\n\
  686. X!   <Key>Return: DoNothing()";
  687. X  
  688. X!  n = 0;
  689. X!  XtSetArg(args[n], XtNwidth, XMail.fileBoxWidth);            n++;
  690. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  691. X!  XtSetArg(args[n], XtNborderWidth, 0);                    n++;
  692. X!  XtSetArg(args[n], XtNstring, (XtArgVal) FileBuf);            n++;
  693. X!  XtSetArg(args[n], XtNlength, (XtArgVal) BUFSIZ);            n++;
  694. X!  XtSetArg(args[n], XtNeditType, (XtArgVal) XttextEdit);            n++;
  695. X!  XtSetArg(args[n], XtNtextOptions, wordBreak);                n++;
  696. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(trans));    n++;
  697. X! #ifndef X11R3
  698. X   XtSetArg(args[n], XtNautoFill, True);                    n++;
  699. X  #endif
  700. X  
  701. X   w = XtCreateManagedWidget("fileWindow",asciiStringWidgetClass,parent,args,n);
  702. X   writeText(w, "File: ", 0);
  703. X  
  704. X   AddHelpText(w, "file", File_Help_Text);
  705. X--- 364,411 ----
  706. X  CreateFileWindow(parent)
  707. X  Widget parent;
  708. X  {
  709. X!  Arg        args[10];
  710. X   Cardinal     n;
  711. X   Widget        w;
  712. X  
  713. X!  static String trans = " \
  714. X!   Ctrl<Key>A:        beginning-of-file()\n\
  715. X!   Ctrl<Key>B:        backward-character()\n\
  716. X!   Ctrl<Key>D:        CheckInsert() delete-next-character()\n\
  717. X!   Ctrl<Key>E:        end-of-file()\n\
  718. X!   Ctrl<Key>F:        forward-character()\n\
  719. X!   Ctrl<Key>H:        DeleteChar()\n\
  720. X!   Ctrl<Key>J:        DoNothing()\n\
  721. X!   Ctrl<Key>M:        DoNothing()\n\
  722. X!   Ctrl<Key>U:        DeleteLine()\n\
  723. X!   Ctrl<Key>W:        DeleteWord()\n\
  724. X!   Meta<Key>F:        forward-word()\n\
  725. X!   Meta<Key>B:        backward-word()\n\
  726. X!   Meta<Key>d:        CheckInsert() delete-next-word()\n\
  727. X!   <Key>Right:        forward-character()\n\
  728. X!   <Key>Left:        backward-character()\n\
  729. X!   <Key>Delete:        DeleteChar()\n\
  730. X!   <Key>BackSpace:    DeleteChar()\n\
  731. X!   <Key>Linefeed:    DoNothing()\n\
  732. X!   <Key>Return:        DoNothing()\n\
  733. X!   <Key>:        CheckInsert() insert-char()";
  734. X  
  735. X!  XtSetArg(args[0], XtNwidth, XMail.fileBoxWidth);
  736. X!  XtSetArg(args[1], XtNfont, TextFontStr);
  737. X!  XtSetArg(args[2], XtNborderWidth, 0);
  738. X!  XtSetArg(args[3], XtNstring, (XtArgVal) FileBuf);
  739. X!  XtSetArg(args[4], XtNlength, (XtArgVal) BUFSIZ);
  740. X!  XtSetArg(args[5], XtNeditType, (XtArgVal) XttextEdit);
  741. X!  XtSetArg(args[6], XtNtextOptions, wordBreak);
  742. X!  XtSetArg(args[7], XtNtranslations, XtParseTranslationTable(trans));
  743. X!  n = 8;
  744. X! 
  745. X! #if XtSpecificationRelease >= 4
  746. X   XtSetArg(args[n], XtNautoFill, True);                    n++;
  747. X  #endif
  748. X  
  749. X   w = XtCreateManagedWidget("fileWindow",asciiStringWidgetClass,parent,args,n);
  750. X+ 
  751. X   writeText(w, "File: ", 0);
  752. X  
  753. X   AddHelpText(w, "file", File_Help_Text);
  754. X***************
  755. X*** 391,415 ****
  756. X  CreateFolderButton(parent)
  757. X  Widget    parent;
  758. X  {
  759. X!  Arg        args[MAXARGS];
  760. X   Widget        button;        /* button which pops up a menu when pressed */
  761. X-  Cardinal    n;
  762. X  
  763. X   static String b_Trans = "\
  764. X      <Btn1Down>: highlight() Folder() unhighlight() \n\
  765. X      <Btn3Down>: SetCursor(True) SetFolders() MenuPopup(popupList) SetCursor()";
  766. X- 
  767. X- 
  768. X  /*
  769. X  ** create the command button and add popup menu translations and callback
  770. X  */
  771. X!  n = 0;
  772. X!  XtSetArg(args[n], XtNwidth, XMail.buttonWidth);            n++;
  773. X!  XtSetArg(args[n], XtNheight, XMail.buttonHeight);            n++;
  774. X!  XtSetArg(args[n], XtNresize, False);                    n++;
  775. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  776. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(b_Trans));    n++;
  777. X!  button = XtCreateManagedWidget("Folder", commandWidgetClass, parent, args, n);
  778. X  
  779. X   AddHelpText(button, "folder", Folder_Help_Text);
  780. X  } /* CreateFolderButton */
  781. X--- 419,439 ----
  782. X  CreateFolderButton(parent)
  783. X  Widget    parent;
  784. X  {
  785. X!  Arg        args[6];
  786. X   Widget        button;        /* button which pops up a menu when pressed */
  787. X  
  788. X   static String b_Trans = "\
  789. X      <Btn1Down>: highlight() Folder() unhighlight() \n\
  790. X      <Btn3Down>: SetCursor(True) SetFolders() MenuPopup(popupList) SetCursor()";
  791. X  /*
  792. X  ** create the command button and add popup menu translations and callback
  793. X  */
  794. X!  XtSetArg(args[0], XtNwidth, XMail.buttonWidth);
  795. X!  XtSetArg(args[1], XtNheight, XMail.buttonHeight);
  796. X!  XtSetArg(args[2], XtNresize, False);
  797. X!  XtSetArg(args[3], XtNfont, TextFontStr);
  798. X!  XtSetArg(args[4], XtNtranslations, XtParseTranslationTable(b_Trans));
  799. X!  button = XtCreateManagedWidget("Folder", commandWidgetClass, parent, args, 5);
  800. X  
  801. X   AddHelpText(button, "folder", Folder_Help_Text);
  802. X  } /* CreateFolderButton */
  803. X***************
  804. X*** 422,443 ****
  805. X  CreateHelpWindow(parent)
  806. X  Widget parent;
  807. X  {
  808. X!  Arg        args[MAXARGS];
  809. X!  Cardinal     n;
  810. X!  Widget        w;
  811. X  
  812. X  
  813. X!  n = 0;
  814. X!  XtSetArg(args[n], XtNborderWidth, 3);                    n++;
  815. X!  w = XtCreatePopupShell("help", overrideShellWidgetClass, parent, args, n);
  816. X  
  817. X!  n = 0;
  818. X!  XtSetArg(args[n], XtNwidth, XMail.helpWidth);                n++;
  819. X!  XtSetArg(args[n], XtNheight, XMail.helpHeight);            n++;
  820. X!  XtSetArg(args[n], XtNfont, HelpFontStr);                n++;
  821. X!  XtSetArg(args[n], XtNeditType, (XtArgVal) XttextRead);            n++;
  822. X!  XtSetArg(args[n], XtNtextOptions, wordBreak);                n++;
  823. X!  XtCreateManagedWidget("helpWindow", asciiStringWidgetClass, w, args, n);
  824. X  } /* CreateHelpWindow */
  825. X  
  826. X  
  827. X--- 446,464 ----
  828. X  CreateHelpWindow(parent)
  829. X  Widget parent;
  830. X  {
  831. X!  Arg    args[6];
  832. X!  Widget    w;
  833. X  
  834. X  
  835. X!  XtSetArg(args[0], XtNborderWidth, 3);
  836. X!  w = XtCreatePopupShell("help", overrideShellWidgetClass, parent, args, 1);
  837. X  
  838. X!  XtSetArg(args[0], XtNwidth, XMail.helpWidth);
  839. X!  XtSetArg(args[1], XtNheight, XMail.helpHeight);
  840. X!  XtSetArg(args[2], XtNfont, HelpFontStr);
  841. X!  XtSetArg(args[3], XtNeditType, (XtArgVal) XttextRead);
  842. X!  XtSetArg(args[4], XtNtextOptions, wordBreak);
  843. X!  XtCreateManagedWidget("helpWindow", asciiStringWidgetClass, w, args, 5);
  844. X  } /* CreateHelpWindow */
  845. X  
  846. X  
  847. X***************
  848. X*** 448,456 ****
  849. X  CreateIndexWindow(parent)
  850. X  Widget parent;
  851. X  {
  852. X!  Arg     args[MAXARGS];
  853. X!  Cardinal     n;
  854. X!  Widget        w;
  855. X  
  856. X   static String translations =
  857. X      "<Key>:        DoNothing() \n\
  858. X--- 469,476 ----
  859. X  CreateIndexWindow(parent)
  860. X  Widget parent;
  861. X  {
  862. X!  Arg    args[8];
  863. X!  Widget    w;
  864. X  
  865. X   static String translations =
  866. X      "<Key>:        DoNothing() \n\
  867. X***************
  868. X*** 458,474 ****
  869. X      <Btn3Down>:    select-start() SetSelect() \n\
  870. X      <Btn3Up>:    DoSelected(p)";
  871. X  
  872. X!  n = 0;
  873. X!  XtSetArg(args[n], XtNheight, XMail.indexHeight);            n++;
  874. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  875. X!  XtSetArg(args[n], XtNstring, (XtArgVal) IndexBuf);            n++;
  876. X!  XtSetArg(args[n], XtNlength, (XtArgVal) INDEXSIZE);            n++;
  877. X!  XtSetArg(args[n], XtNeditType, (XtArgVal) XttextEdit);            n++;
  878. X!  XtSetArg(args[n], XtNtextOptions, scrollVertical | wordBreak);        n++;
  879. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(translations));
  880. X!                                     n++;
  881. X!  w = XtCreateManagedWidget("indexWindow",asciiStringWidgetClass,parent,args,n);
  882. X  
  883. X   AddHelpText(w, "index", Index_Help_Text);
  884. X  } /* CreateIndexWindow */
  885. X  
  886. X--- 478,493 ----
  887. X      <Btn3Down>:    select-start() SetSelect() \n\
  888. X      <Btn3Up>:    DoSelected(p)";
  889. X  
  890. X!  XtSetArg(args[0], XtNheight, XMail.indexHeight);
  891. X!  XtSetArg(args[1], XtNfont, TextFontStr);
  892. X!  XtSetArg(args[2], XtNstring, (XtArgVal) IndexBuf);
  893. X!  XtSetArg(args[3], XtNlength, (XtArgVal) INDEXSIZE);
  894. X!  XtSetArg(args[4], XtNeditType, (XtArgVal) XttextEdit);
  895. X!  XtSetArg(args[5], XtNtextOptions, scrollVertical | wordBreak);
  896. X!  XtSetArg(args[6], XtNtranslations, XtParseTranslationTable(translations));
  897. X  
  898. X+  w = XtCreateManagedWidget("indexWindow",asciiStringWidgetClass,parent,args,7);
  899. X+ 
  900. X   AddHelpText(w, "index", Index_Help_Text);
  901. X  } /* CreateIndexWindow */
  902. X  
  903. X***************
  904. X*** 480,486 ****
  905. X  CreateStatusWindow(parent)
  906. X  Widget parent;
  907. X  {
  908. X!  Arg     args[MAXARGS];
  909. X   Cardinal     n;
  910. X   Widget        w;
  911. X  
  912. X--- 499,505 ----
  913. X  CreateStatusWindow(parent)
  914. X  Widget parent;
  915. X  {
  916. X!  Arg        args[10];
  917. X   Cardinal     n;
  918. X   Widget        w;
  919. X  
  920. X***************
  921. X*** 488,506 ****
  922. X      <Btn1Down>:    DoNothing()\n\
  923. X      <Btn3Down>:    DoNothing()";
  924. X  
  925. X!  n = 0;
  926. X!  XtSetArg(args[n], XtNwidth, (XtArgVal) XMail.shellWidth);        n++;
  927. X!  XtSetArg(args[n], XtNallowResize, (XtArgVal) False);            n++;
  928. X!  XtSetArg(args[n], XtNmax, (XtArgVal) XMail.buttonHeight);         n++;
  929. X!  XtSetArg(args[n], XtNmin, (XtArgVal) XMail.buttonHeight);         n++;
  930. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  931. X!  XtSetArg(args[n], XtNjustify, (XtArgVal) XtJustifyCenter);        n++;
  932. X!  XtSetArg(args[n], XtNlabel, (XtArgVal) "Establishing connections");    n++;
  933. X!  XtSetArg(args[n], XtNresize, (XtArgVal) False);            n++;
  934. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(w_Trans));    n++;
  935. X! #ifndef X11R3
  936. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  937. X  #endif
  938. X   w = XtCreateManagedWidget("statusWindow", labelWidgetClass, parent, args, n);
  939. X  
  940. X   AddHelpText(w, "status", Status_Help_Text);
  941. X--- 507,527 ----
  942. X      <Btn1Down>:    DoNothing()\n\
  943. X      <Btn3Down>:    DoNothing()";
  944. X  
  945. X!  XtSetArg(args[0], XtNwidth,        (XtArgVal) XMail.shellWidth);
  946. X!  XtSetArg(args[1], XtNallowResize,    (XtArgVal) False);
  947. X!  XtSetArg(args[2], XtNmax,        (XtArgVal) XMail.buttonHeight);
  948. X!  XtSetArg(args[3], XtNmin,        (XtArgVal) XMail.buttonHeight);
  949. X!  XtSetArg(args[4], XtNfont,        TextFontStr);
  950. X!  XtSetArg(args[5], XtNjustify,        (XtArgVal) XtJustifyCenter);
  951. X!  XtSetArg(args[6], XtNlabel,        (XtArgVal) "Establishing connections");
  952. X!  XtSetArg(args[7], XtNresize,        (XtArgVal) False);
  953. X!  XtSetArg(args[8], XtNtranslations, XtParseTranslationTable(w_Trans));
  954. X!  n = 9;
  955. X! 
  956. X! #if XtSpecificationRelease >= 4
  957. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  958. X  #endif
  959. X+ 
  960. X   w = XtCreateManagedWidget("statusWindow", labelWidgetClass, parent, args, n);
  961. X  
  962. X   AddHelpText(w, "status", Status_Help_Text);
  963. X***************
  964. X*** 514,534 ****
  965. X  CreateSubWindows(parent)
  966. X  Widget parent;
  967. X  {
  968. X!  Arg        args[MAXARGS];
  969. X!  Cardinal     k, n;
  970. X!  Widget        icon, mb, vpane;
  971. X  /*
  972. X  ** Special added actions
  973. X  */
  974. X  static XtActionsRec actionTable[] = {
  975. X!     {"DeleteWord",        (XtActionProc) DeleteWord},
  976. X      {"DeleteLine",        (XtActionProc) DeleteLine},
  977. X      {"Iconify",        (XtActionProc) Iconify},
  978. X-     {"InsertSpace",        (XtActionProc) InsertSpace},
  979. X      {"Folder",        (XtActionProc) Folder},
  980. X      {"SetPopup",        (XtActionProc) SetPopup},
  981. X      {"SetFolders",        (XtActionProc) SetFolders},
  982. X      {"SetHelp",        (XtActionProc) SetHelp},
  983. X      {"DoNothing",        (XtActionProc) DoNothing},
  984. X      {"DoSelected",        (XtActionProc) DoSelected},
  985. X      {"SetAliases",        (XtActionProc) SetAliases},
  986. X--- 535,557 ----
  987. X  CreateSubWindows(parent)
  988. X  Widget parent;
  989. X  {
  990. X!  Arg        args[4];
  991. X!  Widget        icon, mb, topbox;
  992. X!  int        x, y, width, height;
  993. X  /*
  994. X  ** Special added actions
  995. X  */
  996. X  static XtActionsRec actionTable[] = {
  997. X!     {"CheckInsert",        (XtActionProc) CheckInsert},
  998. X!     {"DeleteChar",        (XtActionProc) DeleteChar},
  999. X      {"DeleteLine",        (XtActionProc) DeleteLine},
  1000. X+     {"DeleteWord",        (XtActionProc) DeleteWord},
  1001. X      {"Iconify",        (XtActionProc) Iconify},
  1002. X      {"Folder",        (XtActionProc) Folder},
  1003. X      {"SetPopup",        (XtActionProc) SetPopup},
  1004. X      {"SetFolders",        (XtActionProc) SetFolders},
  1005. X      {"SetHelp",        (XtActionProc) SetHelp},
  1006. X+     {"SetMenu",        (XtActionProc) SetMenu},
  1007. X      {"DoNothing",        (XtActionProc) DoNothing},
  1008. X      {"DoSelected",        (XtActionProc) DoSelected},
  1009. X      {"SetAliases",        (XtActionProc) SetAliases},
  1010. X***************
  1011. X*** 549,578 ****
  1012. X  
  1013. X   XtAddActions(actionTable, XtNumber(actionTable));
  1014. X  
  1015. X!  n = 0;
  1016. X!  XtSetArg(args[n], XtNinput, (XtArgVal) True);                n++;
  1017. X!  XtSetArg(args[n], XtNwidth, (XtArgVal) XMail.shellWidth);        n++;
  1018. X!  XtSetArg(args[n], XtNgripIndent, (XtArgVal) 0);            n++;
  1019. X!  XtSetArg(args[n], XtNskipAdjust, (XtArgVal) True);            n++;
  1020. X  
  1021. X!  vpane = XtCreateManagedWidget("vpane", vPanedWidgetClass, parent, args, n);
  1022. X  
  1023. X!  CreateHelpWindow(vpane);
  1024. X!  CreateTitleBar(vpane);
  1025. X!  CreateIndexWindow(vpane);
  1026. X!  CreateStatusWindow(vpane);
  1027. X!  CreateCommandPanel(vpane);
  1028. X!  CreateTextWindow(vpane);
  1029. X  /*
  1030. X  ** Create an icon window for the mailwatchWidget
  1031. X  */
  1032. X!  n = 0;
  1033. X!  XtSetArg(args[n], XtNwidth, (XtArgVal) mail_width);            n++;
  1034. X!  XtSetArg(args[n], XtNheight, (XtArgVal) mail_height);            n++;
  1035. X!  icon = XtCreateWidget("icon", applicationShellWidgetClass, toplevel, args, n);
  1036. X   mb = XtCreateManagedWidget("mailbox", mailwatchWidgetClass, icon, NULL, 0);
  1037. X   XtAddCallback(mb, XtNcallback, SetNewmail, NULL);
  1038. X- 
  1039. X  } /* CreateSubWindows */ 
  1040. X  
  1041. X  
  1042. X--- 572,604 ----
  1043. X  
  1044. X   XtAddActions(actionTable, XtNumber(actionTable));
  1045. X  
  1046. X!  XtSetArg(args[0], XtNinput, (XtArgVal) True);
  1047. X!  XtSetArg(args[1], XtNwidth, (XtArgVal) XMail.shellWidth);
  1048. X!  XtSetArg(args[2], XtNgripIndent, (XtArgVal) 0);
  1049. X!  XtSetArg(args[3], XtNskipAdjust, (XtArgVal) True);
  1050. X  
  1051. X!  topbox = XtCreateManagedWidget("topBox", vPanedWidgetClass, parent, args, 4);
  1052. X  
  1053. X!  CreateHelpWindow(topbox);
  1054. X!  CreateTitleBar(topbox);
  1055. X!  CreateIndexWindow(topbox);
  1056. X!  CreateStatusWindow(topbox);
  1057. X!  CreateCommandPanel(topbox);
  1058. X!  CreateTextWindow(topbox);
  1059. X  /*
  1060. X  ** Create an icon window for the mailwatchWidget
  1061. X  */
  1062. X!  x = y = 0;
  1063. X!  if (XMail.iconGeometry)
  1064. X!     XParseGeometry(XMail.iconGeometry, &x, &y, &width, &height);
  1065. X! 
  1066. X!  XtSetArg(args[0], XtNwidth, (XtArgVal) mail_width);
  1067. X!  XtSetArg(args[1], XtNheight, (XtArgVal) mail_height);
  1068. X!  XtSetArg(args[2], XtNx, (XtArgVal) x);
  1069. X!  XtSetArg(args[3], XtNy, (XtArgVal) y);
  1070. X!  icon = XtCreateWidget("icon", applicationShellWidgetClass, toplevel, args, 4);
  1071. X   mb = XtCreateManagedWidget("mailbox", mailwatchWidgetClass, icon, NULL, 0);
  1072. X   XtAddCallback(mb, XtNcallback, SetNewmail, NULL);
  1073. X  } /* CreateSubWindows */ 
  1074. X  
  1075. X  
  1076. X***************
  1077. X*** 583,599 ****
  1078. X  CreateTextWindow(parent)
  1079. X  Widget parent;
  1080. X  {
  1081. X!  Arg         args[MAXARGS];
  1082. X!  Cardinal     n;
  1083. X   Widget    tw;
  1084. X  
  1085. X  
  1086. X!  n = 0;
  1087. X!  XtSetArg(args[n], XtNmin, XMail.textMinHeight);            n++;
  1088. X!  XtSetArg(args[n], XtNheight, XMail.textHeight);            n++;
  1089. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  1090. X!  XtSetArg(args[n], XtNtextOptions, scrollVertical | wordBreak);        n++;
  1091. X!  tw = XtCreateManagedWidget("textWindow",asciiStringWidgetClass,parent,args,n);
  1092. X  
  1093. X   AddHelpText(tw, "text", Text_Help_Text);
  1094. X  } /* CreateTextWindow */
  1095. X--- 609,623 ----
  1096. X  CreateTextWindow(parent)
  1097. X  Widget parent;
  1098. X  {
  1099. X!  Arg     args[4];
  1100. X   Widget    tw;
  1101. X  
  1102. X  
  1103. X!  XtSetArg(args[0], XtNmin, XMail.textMinHeight);
  1104. X!  XtSetArg(args[1], XtNheight, XMail.textHeight);
  1105. X!  XtSetArg(args[2], XtNfont, TextFontStr);
  1106. X!  XtSetArg(args[3], XtNtextOptions, scrollVertical | wordBreak);
  1107. X!  tw = XtCreateManagedWidget("textWindow",asciiStringWidgetClass,parent,args,4);
  1108. X  
  1109. X   AddHelpText(tw, "text", Text_Help_Text);
  1110. X  } /* CreateTextWindow */
  1111. X***************
  1112. X*** 607,616 ****
  1113. X  CreateTitleBar(parent)
  1114. X  Widget parent;
  1115. X  {
  1116. X!  Arg     args[MAXARGS];
  1117. X   Cardinal     n;
  1118. X   Pixmap        logo;
  1119. X   Widget        form, lg, tb;
  1120. X  
  1121. X   static String w_Trans = "\
  1122. X      <Btn1Down>:    DoNothing()\n\
  1123. X--- 631,641 ----
  1124. X  CreateTitleBar(parent)
  1125. X  Widget parent;
  1126. X  {
  1127. X!  Arg        args[8];
  1128. X   Cardinal     n;
  1129. X   Pixmap        logo;
  1130. X   Widget        form, lg, tb;
  1131. X+  char        buf[20];
  1132. X  
  1133. X   static String w_Trans = "\
  1134. X      <Btn1Down>:    DoNothing()\n\
  1135. X***************
  1136. X*** 622,659 ****
  1137. X      <Btn2Down>:    Iconify()\n\
  1138. X      <Btn3Down>:    Iconify()";
  1139. X  
  1140. X!  n = 0;
  1141. X!  XtSetArg(args[n], XtNdefaultDistance, 1);                n++;
  1142. X!  XtSetArg(args[n], XtNallowResize, (XtArgVal) False);            n++;
  1143. X!  XtSetArg(args[n], XtNmax, (XtArgVal) XMail.buttonHeight);        n++;
  1144. X!  XtSetArg(args[n], XtNmin, (XtArgVal) XMail.buttonHeight);        n++;
  1145. X! #ifndef X11R3
  1146. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  1147. X  #endif
  1148. X   form = XtCreateManagedWidget("titleBar", formWidgetClass, parent, args, n);
  1149. X  
  1150. X   logo = XCreateBitmapFromData(XtDisplay(toplevel), XtScreen(toplevel)->root,
  1151. X                          national_bits, national_width, national_height);
  1152. X-  n = 0;
  1153. X-  XtSetArg(args[n], XtNborderWidth, 0);                    n++;
  1154. X-  XtSetArg(args[n], XtNinternalWidth, 0);                n++;
  1155. X-  XtSetArg(args[n], XtNwidth, national_width);                n++;
  1156. X-  XtSetArg(args[n], XtNheight, (XtArgVal) XMail.buttonHeight);        n++;
  1157. X-  XtSetArg(args[n], XtNbitmap, (XtArgVal) logo);                n++;
  1158. X-  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(l_Trans));    n++;
  1159. X-  lg = XtCreateManagedWidget("logo", commandWidgetClass, form, args, n);
  1160. X  
  1161. X!  n = 0;
  1162. X!  XtSetArg(args[n], XtNborderWidth, 0);                    n++;
  1163. X!  XtSetArg(args[n], XtNwidth, XMail.shellWidth - national_width - 2);     n++;
  1164. X!  XtSetArg(args[n], XtNheight, (XtArgVal) XMail.buttonHeight);        n++;
  1165. X!  XtSetArg(args[n], XtNlabel, (XtArgVal) TITLE);                n++;
  1166. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  1167. X!  XtSetArg(args[n], XtNjustify, (XtArgVal) XtJustifyLeft);        n++;
  1168. X!  XtSetArg(args[n], XtNfromHoriz, lg);                    n++;
  1169. X!  XtSetArg(args[n], XtNtranslations, XtParseTranslationTable(w_Trans));    n++;
  1170. X!  tb = XtCreateManagedWidget("titleBar", labelWidgetClass, form, args, n);
  1171. X  
  1172. X   AddHelpText(tb, "title", Title_Help_Text);
  1173. X  } /* CreateTitleBar */
  1174. X  
  1175. X--- 647,686 ----
  1176. X      <Btn2Down>:    Iconify()\n\
  1177. X      <Btn3Down>:    Iconify()";
  1178. X  
  1179. X!  XtSetArg(args[0], XtNdefaultDistance, 1);
  1180. X!  XtSetArg(args[1], XtNallowResize, (XtArgVal) False);
  1181. X!  XtSetArg(args[2], XtNmax, (XtArgVal) XMail.buttonHeight);
  1182. X!  XtSetArg(args[3], XtNmin, (XtArgVal) XMail.buttonHeight);
  1183. X!  n = 4;
  1184. X! 
  1185. X! #if XtSpecificationRelease >= 4
  1186. X   XtSetArg(args[n], XtNshowGrip, (XtArgVal) False);            n++;
  1187. X  #endif
  1188. X+ 
  1189. X   form = XtCreateManagedWidget("titleBar", formWidgetClass, parent, args, n);
  1190. X  
  1191. X   logo = XCreateBitmapFromData(XtDisplay(toplevel), XtScreen(toplevel)->root,
  1192. X                          national_bits, national_width, national_height);
  1193. X  
  1194. X!  XtSetArg(args[0], XtNborderWidth, 0);
  1195. X!  XtSetArg(args[1], XtNheight, (XtArgVal) XMail.buttonHeight);
  1196. X  
  1197. X+  XtSetArg(args[2], XtNwidth, national_width);
  1198. X+  XtSetArg(args[3], XtNinternalWidth, 0);
  1199. X+  XtSetArg(args[4], XtNbitmap, (XtArgVal) logo);
  1200. X+  XtSetArg(args[5], XtNtranslations, XtParseTranslationTable(l_Trans));
  1201. X+  lg = XtCreateManagedWidget("logo", commandWidgetClass, form, args, 6);
  1202. X+ 
  1203. X+  sprintf(buf, "%s%d", TITLE, PATCHLEVEL);
  1204. X+ 
  1205. X+  XtSetArg(args[2], XtNwidth, XMail.shellWidth - national_width - 2);
  1206. X+  XtSetArg(args[3], XtNlabel, (XtArgVal) buf);
  1207. X+  XtSetArg(args[4], XtNfont, TextFontStr);
  1208. X+  XtSetArg(args[5], XtNjustify, (XtArgVal) XtJustifyLeft);
  1209. X+  XtSetArg(args[6], XtNfromHoriz, lg);
  1210. X+  XtSetArg(args[7], XtNtranslations, XtParseTranslationTable(w_Trans));
  1211. X+  tb = XtCreateManagedWidget("titleBar", labelWidgetClass, form, args, 8);
  1212. X+ 
  1213. X   AddHelpText(tb, "title", Title_Help_Text);
  1214. X  } /* CreateTitleBar */
  1215. X  
  1216. X***************
  1217. X*** 670,676 ****
  1218. X  String        buf;
  1219. X  Cardinal    len;
  1220. X  {
  1221. X!  Arg        args[MAXARGS];
  1222. X   Cardinal     n;
  1223. X  
  1224. X   static String trans = "#override \
  1225. X--- 697,703 ----
  1226. X  String        buf;
  1227. X  Cardinal    len;
  1228. X  {
  1229. X!  Arg        args[12];
  1230. X   Cardinal     n;
  1231. X  
  1232. X   static String trans = "#override \
  1233. X***************
  1234. X*** 693,719 ****
  1235. X    <Key>Return: NextField()";
  1236. X  
  1237. X   n  = XMail.shellWidth - 106;    /* - (scn + 2*(internal width + def.dist.)) */
  1238. X!  n -= TEXTWIDTH * 9;        /* minus the width of the label text */
  1239. X   XtSetArg(args[0], XtNwidth, n);
  1240. X  
  1241. X!  n = 1;
  1242. X!  XtSetArg(args[n], XtNinput, True);                    n++;
  1243. X!  XtSetArg(args[n], XtNheight, TEXTHEIGHT);                n++;
  1244. X!  XtSetArg(args[n], XtNvertDistance, (TEXTHEIGHT * 3.0) / 5.0);        n++;
  1245. X!  XtSetArg(args[n], XtNfont, TextFontStr);                n++;
  1246. X!  XtSetArg(args[n], XtNborderWidth, 0);                    n++;
  1247. X!  XtSetArg(args[n], XtNstring, buf);                    n++;
  1248. X!  XtSetArg(args[n], XtNlength, len);                    n++;
  1249. X!  XtSetArg(args[n], XtNeditType, (XtArgVal) XttextEdit);            n++;
  1250. X!  XtSetArg(args[n], XtNtextOptions, wordBreak);                n++;
  1251. X  
  1252. X!  if (strcmp(name, "To") == 0 || strcmp(name, "Cc") == 0) {
  1253. X!     XtSetArg(args[n],XtNtranslations,XtParseTranslationTable(b_trans));    n++;
  1254. X     } else {
  1255. X!     XtSetArg(args[n],XtNtranslations,XtParseTranslationTable(trans));    n++;
  1256. X     }
  1257. X  
  1258. X! #ifndef X11R3
  1259. X   XtSetArg(args[n], XtNautoFill, True);                    n++;
  1260. X  #endif
  1261. X  
  1262. X--- 720,745 ----
  1263. X    <Key>Return: NextField()";
  1264. X  
  1265. X   n  = XMail.shellWidth - 106;    /* - (scn + 2*(internal width + def.dist.)) */
  1266. X!  n -= TEXTWIDTH * 9 - 6;    /* minus label text width less fudge factor */
  1267. X   XtSetArg(args[0], XtNwidth, n);
  1268. X  
  1269. X!  XtSetArg(args[1], XtNinput, True);
  1270. X!  XtSetArg(args[2], XtNheight, XMail.buttonHeight);
  1271. X!  XtSetArg(args[3], XtNfont, TextFontStr);
  1272. X!  XtSetArg(args[4], XtNborderWidth, 0);
  1273. X!  XtSetArg(args[5], XtNstring, buf);
  1274. X!  XtSetArg(args[6], XtNlength, len);
  1275. X!  XtSetArg(args[7], XtNeditType, (XtArgVal) XttextEdit);
  1276. X!  XtSetArg(args[8], XtNtextOptions, wordBreak);
  1277. X  
  1278. X!  if (strcmp(name, "Subject") == 0) {
  1279. X!     XtSetArg(args[9], XtNtranslations, XtParseTranslationTable(trans));
  1280. X     } else {
  1281. X!     XtSetArg(args[9], XtNtranslations, XtParseTranslationTable(b_trans));
  1282. X     }
  1283. X+  n = 10;
  1284. X  
  1285. X! #if XtSpecificationRelease >= 4
  1286. X   XtSetArg(args[n], XtNautoFill, True);                    n++;
  1287. X  #endif
  1288. X  
  1289. X*** ../v1.0/xmail.c    Sun May 27 21:05:58 1990
  1290. X--- xmail.c    Sun May 27 21:11:39 1990
  1291. X***************
  1292. X*** 47,57 ****
  1293. X  
  1294. X  #include "global.h"
  1295. X  #include "Mailwatch.h"            /* use as icon and watch for newmail */
  1296. X! #ifdef X11R3
  1297. X! #include <X11/CommandP.h>
  1298. X! #else
  1299. X  #include <X11/Xaw/CommandP.h>
  1300. X  #endif
  1301. X  #include "icon.nomail"            /* default icon pixmap source */
  1302. X  #include <X11/cursorfont.h>        /* use watch cursor for busy notify */
  1303. X  #include <X11/bitmaps/cross_weave>    /* background use in Newmail notify */
  1304. X--- 47,59 ----
  1305. X  
  1306. X  #include "global.h"
  1307. X  #include "Mailwatch.h"            /* use as icon and watch for newmail */
  1308. X! 
  1309. X! #if XtSpecificationRelease >= 4
  1310. X  #include <X11/Xaw/CommandP.h>
  1311. X+ #else
  1312. X+ #include <X11/CommandP.h>
  1313. X  #endif
  1314. X+ 
  1315. X  #include "icon.nomail"            /* default icon pixmap source */
  1316. X  #include <X11/cursorfont.h>        /* use watch cursor for busy notify */
  1317. X  #include <X11/bitmaps/cross_weave>    /* background use in Newmail notify */
  1318. X***************
  1319. X*** 59,96 ****
  1320. X  #define Offset(field) (XtOffset(XmailResources *, field))
  1321. X  
  1322. X  static char what[] =
  1323. X!  "@(#)xmail.c 1.0 90/03/19 Copyright 1989 National Semiconductor Corp.";
  1324. X  
  1325. X  static XtResource resrcs[] = {
  1326. X      {XtNfont, XtCFont, XtRString, sizeof(char *),
  1327. X          Offset(textFont), XtRString, (caddr_t) NULL},
  1328. X-     {"bellRing", "BellRing", XtRBoolean, sizeof(Boolean), 
  1329. X-     Offset(bellRing), XtRImmediate, (caddr_t) True},
  1330. X      {"helpFont", "HelpFont", XtRString, sizeof(char *),
  1331. X          Offset(helpFont), XtRString, (caddr_t) NULL},
  1332. X!     {"mailopt_i", "Mailopt_i", XtRBoolean, sizeof(Boolean), 
  1333. X!     Offset(mailopt_i), XtRImmediate, (caddr_t) False},
  1334. X      {"mailopt_n", "Mailopt_n", XtRBoolean, sizeof(Boolean), 
  1335. X      Offset(mailopt_n), XtRImmediate, (caddr_t) False},
  1336. X      {"mailopt_U", "Mailopt_U", XtRBoolean, sizeof(Boolean), 
  1337. X      Offset(mailopt_U), XtRImmediate, (caddr_t) False},
  1338. X-     {"MFileName", "MFileName", XtRString, sizeof(char *), 
  1339. X-     Offset(MFileName), XtRImmediate, (caddr_t) NULL},
  1340. X-     {"SubjectStr", "SubjectStr", XtRString, sizeof(char *), 
  1341. X-     Offset(SubjectStr), XtRImmediate, (caddr_t) NULL},
  1342. X      {"Show_Last", "Show_Last", XtRBoolean, sizeof(Boolean), 
  1343. X      Offset(Show_Last), XtRImmediate, (caddr_t) True},
  1344. X  };
  1345. X  
  1346. X  static XrmOptionDescRec Opts[] = {
  1347. X!     {"-nb",    "*bellRing",    XrmoptionNoArg, (caddr_t) "False"},
  1348. X!     {"-helpfont", "*helpFont",    XrmoptionSepArg, (caddr_t) NULL},
  1349. X!     {"-i",    "*mailopt_i",    XrmoptionNoArg, (caddr_t) "True"},
  1350. X!     {"-n",    "*mailopt_n",    XrmoptionNoArg, (caddr_t) "True"},
  1351. X!     {"-U",    "*mailopt_U",    XrmoptionNoArg, (caddr_t) "True"},
  1352. X!     {"-f",    "*MFileName",    XrmoptionSepArg, (caddr_t) NULL},
  1353. X!     {"-s",    "*SubjectStr",    XrmoptionSepArg, (caddr_t) NULL},
  1354. X!     {"-ls",    "*Show_Last",    XrmoptionNoArg, (caddr_t) "False"},
  1355. X  };
  1356. X  
  1357. X  char    *IndexBuf;        /* buffer for index widget    */
  1358. X--- 61,98 ----
  1359. X  #define Offset(field) (XtOffset(XmailResources *, field))
  1360. X  
  1361. X  static char what[] =
  1362. X!  "@(#)xmail.c 1.1 90/05/29 Copyright 1989 National Semiconductor Corp.";
  1363. X  
  1364. X  static XtResource resrcs[] = {
  1365. X      {XtNfont, XtCFont, XtRString, sizeof(char *),
  1366. X          Offset(textFont), XtRString, (caddr_t) NULL},
  1367. X      {"helpFont", "HelpFont", XtRString, sizeof(char *),
  1368. X          Offset(helpFont), XtRString, (caddr_t) NULL},
  1369. X!     {"iconGeometry", "IconGeometry", XtRString, sizeof(char *),
  1370. X!         Offset(iconGeometry), XtRString, (caddr_t) NULL},
  1371. X!     {"MFileName", "MFileName", XtRString, sizeof(char *), 
  1372. X!     Offset(MFileName), XtRString, (caddr_t) NULL},
  1373. X!     {"iconic", "Iconic", XtRBoolean, sizeof(Boolean), 
  1374. X!     Offset(iconic), XtRImmediate, (caddr_t) False},
  1375. X!     {"bellRing", "BellRing", XtRBoolean, sizeof(Boolean), 
  1376. X!     Offset(bellRing), XtRImmediate, (caddr_t) True},
  1377. X      {"mailopt_n", "Mailopt_n", XtRBoolean, sizeof(Boolean), 
  1378. X      Offset(mailopt_n), XtRImmediate, (caddr_t) False},
  1379. X      {"mailopt_U", "Mailopt_U", XtRBoolean, sizeof(Boolean), 
  1380. X      Offset(mailopt_U), XtRImmediate, (caddr_t) False},
  1381. X      {"Show_Last", "Show_Last", XtRBoolean, sizeof(Boolean), 
  1382. X      Offset(Show_Last), XtRImmediate, (caddr_t) True},
  1383. X  };
  1384. X  
  1385. X  static XrmOptionDescRec Opts[] = {
  1386. X!     {"-helpfont",    "*helpFont",    XrmoptionSepArg, (caddr_t) NULL},
  1387. X!     {"-iconGeometry",    "*iconGeometry", XrmoptionSepArg, (caddr_t) NULL},
  1388. X!     {"-iconic",        "*iconic",    XrmoptionNoArg, (caddr_t) "True"},
  1389. X!     {"-f",        "*MFileName",    XrmoptionSepArg, (caddr_t) NULL},
  1390. X!     {"-nb",        "*bellRing",    XrmoptionNoArg, (caddr_t) "False"},
  1391. X!     {"-n",        "*mailopt_n",    XrmoptionNoArg, (caddr_t) "True"},
  1392. X!     {"-U",        "*mailopt_U",    XrmoptionNoArg, (caddr_t) "True"},
  1393. X!     {"-ls",        "*Show_Last",    XrmoptionNoArg, (caddr_t) "False"},
  1394. X  };
  1395. X  
  1396. X  char    *IndexBuf;        /* buffer for index widget    */
  1397. X***************
  1398. X*** 100,108 ****
  1399. X  char     SubjBuf[BUFSIZ];    /* message subject        */
  1400. X  char     InReply[BUFSIZ];    /* reply reference string    */
  1401. X  char     CcBuf[BUFSIZ];        /* message Cc list        */
  1402. X  char     tmpName[BUFSIZ];    /* message temporary filename    */
  1403. X! char     MailPrompt[20];        /* mail program prompt string    */
  1404. X! char    *HelpNames[23];        /* array of help window names    */
  1405. X  char    **mailargv;        /* array passed to mail child    */
  1406. X  
  1407. X  int    mailargc;        /* counter passed to mail child    */
  1408. X--- 102,111 ----
  1409. X  char     SubjBuf[BUFSIZ];    /* message subject        */
  1410. X  char     InReply[BUFSIZ];    /* reply reference string    */
  1411. X  char     CcBuf[BUFSIZ];        /* message Cc list        */
  1412. X+ char     BccBuf[BUFSIZ];        /* message Bcc list        */
  1413. X  char     tmpName[BUFSIZ];    /* message temporary filename    */
  1414. X! char     *MailPrompt;        /* mail program prompt string    */
  1415. X! char    *HelpNames[24];        /* array of help window names    */
  1416. X  char    **mailargv;        /* array passed to mail child    */
  1417. X  
  1418. X  int    mailargc;        /* counter passed to mail child    */
  1419. X***************
  1420. X*** 116,122 ****
  1421. X  Widget  toplevel;         /* top level shell widget */
  1422. X  
  1423. X  XmailResources     XMail;        /* application resources of xmail */
  1424. X! XtTextSource    HelpStrings[22];
  1425. X  XFontStruct    *TextFontStr, *HelpFontStr;
  1426. X  
  1427. X  
  1428. X--- 119,125 ----
  1429. X  Widget  toplevel;         /* top level shell widget */
  1430. X  
  1431. X  XmailResources     XMail;        /* application resources of xmail */
  1432. X! XtTextSource    HelpStrings[23];
  1433. X  XFontStruct    *TextFontStr, *HelpFontStr;
  1434. X  
  1435. X  
  1436. X***************
  1437. X*** 133,147 ****
  1438. X   char **mailargv;
  1439. X   int  i = 0;
  1440. X  
  1441. X!  mailargv = (char **) XtMalloc (MAXARGS * sizeof(char *));
  1442. X   for (i=0; i < *argc; i++)
  1443. X      mailargv[i] = argv[i];
  1444. X  
  1445. X      mailargv[i++] = "-N";        /* no version or header info at start */
  1446. X-     if (XMail->mailopt_i)
  1447. X-     mailargv[i++] = "-i";        /* ignore interrupts */
  1448. X      if (XMail->mailopt_n)
  1449. X!     mailargv[i++] = "-n";        /* don't initialize from mailrc files */
  1450. X      if (XMail->mailopt_U)
  1451. X      mailargv[i++] = "-U";        /* Change uucp to Internet addresses */
  1452. X      if (XMail->MFileName) {
  1453. X--- 136,148 ----
  1454. X   char **mailargv;
  1455. X   int  i = 0;
  1456. X  
  1457. X!  mailargv = (char **) XtMalloc (6 * sizeof(char *));
  1458. X   for (i=0; i < *argc; i++)
  1459. X      mailargv[i] = argv[i];
  1460. X  
  1461. X      mailargv[i++] = "-N";        /* no version or header info at start */
  1462. X      if (XMail->mailopt_n)
  1463. X!     mailargv[i++] = "-n";        /* don't initialize from Mail.rc file */
  1464. X      if (XMail->mailopt_U)
  1465. X      mailargv[i++] = "-U";        /* Change uucp to Internet addresses */
  1466. X      if (XMail->MFileName) {
  1467. X***************
  1468. X*** 148,156 ****
  1469. X      mailargv[i++] = "-f";        /* start from mail folder MFileName */
  1470. X      mailargv[i++] = XMail->MFileName;
  1471. X        }
  1472. X-     if (XMail->SubjectStr) {        /* set subject string to SubjectStr */
  1473. X-     strcpy(SubjBuf, XMail->SubjectStr);
  1474. X-       }
  1475. X      mailargv[i] = NULL;
  1476. X      *argc = i;
  1477. X      return mailargv;
  1478. X--- 149,154 ----
  1479. X***************
  1480. X*** 165,197 ****
  1481. END_OF_FILE
  1482. if test 47115 -ne `wc -c <'Patch.01d'`; then
  1483.     echo shar: \"'Patch.01d'\" unpacked with wrong size!
  1484. fi
  1485. # end of 'Patch.01d'
  1486. fi
  1487. echo shar: End of archive 4 \(of 5\).
  1488. cp /dev/null ark4isdone
  1489. MISSING=""
  1490. for I in 1 2 3 4 5 ; do
  1491.     if test ! -f ark${I}isdone ; then
  1492.     MISSING="${MISSING} ${I}"
  1493.     fi
  1494. done
  1495. if test "${MISSING}" = "" ; then
  1496.     echo You have unpacked all 5 archives.
  1497.     rm -f ark[1-9]isdone
  1498. else
  1499.     echo You still need to unpack the following archives:
  1500.     echo "        " ${MISSING}
  1501. fi
  1502. ##  End of shell archive.
  1503. exit 0
  1504.  
  1505. dan
  1506. ----------------------------------------------------
  1507. O'Reilly && Associates   argv@sun.com / argv@ora.com
  1508. Opinions expressed reflect those of the author only.
  1509.